package servlets;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import controlador.BussinesDelegate;
import dto.DSucursalDTO;
import dto.EmpleadoDTO;
import dto.FacturaDTO;
import dto.MesaDTO;
import dto.MovimientoDTO;


public class CajeroServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
  
    public CajeroServlet() {
        super();
       
    }

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		if(request.getParameter("action").equalsIgnoreCase("despachar")){
    		String idMovimiento = request.getParameter("movimiento");
    		String legajo = request.getParameter("legajo");
    		String nombre = request.getParameter("nombre");
    		
    		
    		EmpleadoDTO e = new EmpleadoDTO();
    		e.setLegajo(legajo);
    		e.setNombre(nombre);
    		
    		BussinesDelegate.getInstancia().despacharMovSucursal(idMovimiento, e);
    		
    		DSucursalDTO deposito = BussinesDelegate.getInstancia().getSucursalUsuario(legajo);
    		
    		List<MovimientoDTO> movimientos1 = deposito.getMovimientos();
    		List<MovimientoDTO> movimientos = new ArrayList<MovimientoDTO>();
    		for(MovimientoDTO m: movimientos1){
    			if (m.getEstado().equalsIgnoreCase("alta")){
    				movimientos.add(m);
    			}
    		}
    		
    		RequestDispatcher dispatcher;
    		request.setAttribute("empleado", e);
    		request.setAttribute("movimientosSucursal", movimientos);
			dispatcher=request.getRequestDispatcher("/Despacho.jsp");
			
    		dispatcher.forward(request, response);
		}
		
		 else if(request.getParameter("action").equalsIgnoreCase("opcionfacturacion")){
	 		String nombre = request.getParameter("nombre");
	 		String legajo = request.getParameter("legajo");
	 		
	 		
	 		EmpleadoDTO e = new EmpleadoDTO();
	 		e.setNombre(nombre);
	 		e.setLegajo(legajo);
	 		
	 		List<MesaDTO> mesasOcupadas = BussinesDelegate.getInstancia().getMesasOcupadas(legajo);
	 		
	 		/*
	 		List<MovimientoDTO> movimientos1 = deposito.getMovimientos();
	 		List<MovimientoDTO> movimientos = new ArrayList<MovimientoDTO>();
	 		for(MovimientoDTO m: movimientos1){
	 			if (m.getEstado().equalsIgnoreCase("alta")){
	 				movimientos.add(m);
	 			}
	 		}
	 		*/
	 		
	 		RequestDispatcher dispatcher;
	 		request.setAttribute("empleado", e);
	 		request.setAttribute("mesasOcupadas", mesasOcupadas);
	 		dispatcher=request.getRequestDispatcher("/FacturarMesa.jsp");
	
	 		dispatcher.forward(request, response);
	 		
	 		
		 } else if(request.getParameter("action").equalsIgnoreCase("opcionAbrirCaja")){
		 		String nombre = request.getParameter("nombre");
		 		String legajo = request.getParameter("legajo");
		 		
		 		
		 		EmpleadoDTO emp = new EmpleadoDTO();
		 		emp.setNombre(nombre);
		 		emp.setLegajo(legajo);
		 		
		 		boolean resp = false;
		 		
		 		resp = BussinesDelegate.getInstancia().abrirCajaDiaria(emp);
		 		
		 		
		 		RequestDispatcher dispatcher;
		 		request.setAttribute("empleado", emp);
		 		request.setAttribute("resp", resp);
		 		dispatcher=request.getRequestDispatcher("/CajaDiaria.jsp");
		
		 		dispatcher.forward(request, response);
			 }
		
		 else if(request.getParameter("action").equalsIgnoreCase("facturarMesa")){
		 		String nombre = request.getParameter("nombre");
		 		String legajo = request.getParameter("legajo");
		 		boolean resp = true;
		 		
		 		EmpleadoDTO e = new EmpleadoDTO();
		 		e.setNombre(nombre);
		 		e.setLegajo(legajo);
		 		FacturaDTO factura = new FacturaDTO();
		 		
		 		String[] numeroMesa = request.getParameterValues("numeroMesa");
        		String aux = numeroMesa[0];
        		int idMesa = Integer.parseInt(aux);
		 		
		 		factura = BussinesDelegate.getInstancia().facturarMesa(idMesa, legajo);
		 		
		 		RequestDispatcher dispatcher;
		 		request.setAttribute("empleado", e);
		 		request.setAttribute("factura", factura);
		 		request.setAttribute("resp", resp);
		 		dispatcher=request.getRequestDispatcher("/MostrarFactura.jsp");
		
		 		dispatcher.forward(request, response);
			 }
//		 else if(request.getParameter("action").equalsIgnoreCase("AplicarDescuento")){
//		 		String nombre = request.getParameter("nombre");
//		 		String legajo = request.getParameter("legajo");
//		 		
//		 		
//		 		EmpleadoDTO e = new EmpleadoDTO();
//		 		e.setNombre(nombre);
//		 		e.setLegajo(legajo);
//		 		
//		 		String[] numeroMesa = request.getParameterValues("numeroMesa");
//				String aux = numeroMesa[0];
//				int idMesa = Integer.parseInt(aux);
//		 		//aca  debo cambiar el metodo para que aplique los descuentos
//		 		FacturaDTO factura=BussinesDelegate.getInstancia().facturarMesa(idMesa, legajo);
//		 		
//		 		RequestDispatcher dispatcher;
//		 		request.setAttribute("empleado", e);
//		 		request.setAttribute("factura", factura);
//		 		dispatcher=request.getRequestDispatcher("/AplicarDescuentoFactura.jsp");
//
//		 		dispatcher.forward(request, response);
//		 }
		 
	} 
}
	

